Grundlangen und Funktionsweise der Kernprogrammerweiterung
Um individuelle Ergänzungen am
Kernprogramm vorzunehmen,
jedoch ohne dies grundlegend zu verändern, steht in PAKMA die sogenannte
Kernprogramm-Erweiterung (aufrufbar über den Menüpunkt
Eingaben ->
Kernprogramm-Erweiterung oder über Strg+F5) zur Verfügung.
Dabei handelt es sich um einen dem Kernprogrammeditor äquivalenten Editor.
Anwendungsbereiche
- 1. Bedienungsfreundliche Ergänzungen im Kernprogramm
Ergänzungen am Kernprogramm, die keinen Bezug zum
physikalischen Ablauf haben sondern die Bedienung des Projekts
für den Anwender erleichtern (z.B. die Steuerung
der Ablauftaste), sollten ebenfalls in der Kernprogrammerweiterung vorgenommen werden.
- 2. Ergänzung eines mit VisEdit erstellten Kernprogramms
Zusätzlich ermöglicht die Kernprogrammerweiterung ein durch den graphischen Editor
VisEdit
erzeugtes Kernprogramm auszubauen, um so Animationselemente zu steuern.
Bei der Erzeugung eines Kernprogramms durch VisEdit wird der
vorherige Quelltext jeweils erneut überschrieben. Daher sollten Sie Änderungen
an einem von VisEdit erzeugten Kernprogramm ausschließlich in der Kernprogrammerweiterung
vornehmen, da diese nicht von VisEdit überschrieben wird.
- 3. Steuerung der Animationselemente
Um die Struktur und Übersichtlichkeit des Kernprogramms zu erhalten,
wird die Kernprogrammerweiterung
häufig zur Steuerung der Animationselemente verwendet.
Die für den physikalischen Ablauf
irrelevanten Variablendeklarationen und Befehle
für die Steuerung der Animationselemente können in der Kernprogrammerweiterung
vorgenommen werden.
Änderungen können wiederum nur im Entwicklungsmodus vorgenommen werden.
In der Registrierkarte
Initialisierung können Variablen und Konstanten
definiert werden, die einmalig beim Compilieren eingelesen werden.
Hingegen werden die Einträge des Reiters
Ausgabe innerhalb der im
Kernprogramm vorhandenen repeat-Schleife platziert und somit ständig abgefragt.
Es ist darauf zu achten, dass Variablen nicht doppelt definiert werden.
Außerdem müssen neu definierte Größen, falls sie in PAKMA ausgegeben werden sollen,
eine entsprechende Zuweisung erhalten,
d.h. mit Hilfe des Befehls
ausgabe(...) als Ausgabegrößen deklariert werden
(s. Abschnitt
3.3 ).
Dies soll nun an zwei Beispielen verdeutlicht werden :
Beispiel 1 : Steuerung von Animationselementen
fallschirmspringer.prv zeigt ein Beispiel für die
Verwendung der Kernprogrammerweiterung.
Ziel ist es hier, Animationselemente in Abhängigkeit vom Zustand eines Schalters darzustellen.
Je nach dem, in welcher Position sich der Schalter während dem Ablauf des Projekts
gerade befindet, soll ein Fallschirm in der Animation mit dargestellt werden
oder nicht. Zusätzlich soll sich der Wert des Luftwiderstands
bei geöffnetem Fallschirm ändern.
Die dazu notwendigen Änderungen werden in der Kernprogrammerweiterung vorgenommen.
Zunächst wird der Wert des Schalter über mit dem Befehl
Fallschirm:=Schalter(Fallschirm); ausgelesen. Je nach Schalterstellung hat die
Größe "Fallschirm" dann den Wert 0 oder 1. Falls der Fallschirm geöffnet ist
(
if fallschirm=1 then ... ), dann wird mit dem Befehl
Element_sichtbar('Fallschirmbild',1)
das Bild des Fallschirms im Ausgabenfenster mit angezeigt.
Zusätzlich wird dann die Konstante für den Luftwiderstand auf den Wert 5 gesetzt.
Ist der Fallschirm dagegen
geschlossen (
if fallschirm=0 then...), dann wird das Bild des Fallschirms nicht
im Ausgabenfenster angezeigt :
Element_sichtbar('Fallschirmbild',0) und zusätzlich die
Konstante für den Luftwiderstand auf den Startwert 1,5 zurückgesetzt.
Der Quellcode im Ausgabeteil der Kernprogramm-Erweiterung sieht wie folgt aus :
Fallschirm:=Schalter(Fallschirm);
if fallschirm=1 then
begin
Element_Sichtbar ('Fallschirmbild',1);
k=5;
end;
if fallschirm=0 then
begin
Element_Sichtbar ('Fallschirmbild',0);
k=1.5;
end;
Beispiel 2 : Projektsteuerung mithilfe der Ablauftaste
pisa.prv zeigt ein weiteres Beispiel für die
Verwendung der Kernprogrammerweiterung.
Ziel ist hier dem Anwender zu ermöglichen, noch vor dem Start des Projekts mit der
Ablauftaste die Werte der Konstanten durch Schieber zu verändern.
Ermöglicht wird dies durch die
Programmsteuerung durch direktes Abfragen des Zustands der Ablauftaste.
Da das Kernprogramm mit VisEdit erzeugt wurde, ist es notwendig die dazu nötigen Ergänzungen
des Quelltextes in der Kernprogramm-Erweiterung vorzunehmen.
Die einzelnen Befehle werden später ausführlich
erläutert. Daher beschränken wir uns hier auf einige kurze Bemerkungen zum Verständnis
des Quelltext :
Mit dem Befehl ablauf_an(status) wird abgefragt, ob die Ablauftaste
gedrückt wurde
(status=1) oder nicht
(status=0).
Die Modellzeit soll erst dann voranschreiten, wenn die Ablauftaste gedrückt wurde.
Daher wird die Schleifenzeit dt durch die Befehlszeile
if ablauf_an=1 then dt:=dt_ else dt:=0;
abhängig vom Status der Ablauftaste gewählt.
Die neue Konstante dt_:=0.1 muss zuvor noch im Initialisierungsteil der Kernprogramm-Erweiterung definiert werden.
Die Werte für die Reibungszahl k, die Anfangsgeschwindigkeit v und die Fallbeschleunigung g sollen
solange die Ablauftaste noch nicht aktiviert wurde über die entsprechenden Schieber einstellbar sein.
Schließlich wird noch eine neue Variable vy_alt zur Steuerung des Animationselements "Vektor 2"
definiert und in PAKMA ausgegeben.
berechnet
Im Ausgabeteil der Kernprogrammerweiterung steht folgender Quelltext :
if ablauf_an=1 then dt:=dt_ else dt:=0;
if ablauf_an=0 then begin
k:=Schieber (k);
v:=Schieber (v);
g:=Schieber (g);
end
vy_alt:=v-dv;
ausgabe(vy_alt)
Als Folge sind die Variablen k, v und g solange
mit Hilfe der Schieber einstellbar, bis
die Ablauftaste aktiviert ist.
Weitere Beispiele zur Verwendung der Kernprogramm-Erweiterung befinden sich im
Abschnitt 3.10 Bedienungsfreundliche Ergänzungen im Kernprogramm
weiter mit...
Die Bereichsgrenzen